package gui;

import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;

/**
 * Třída ModelTabulky umožňuje práci s tabulkami použitými v programu.
 *
 * @author Magda Kutišová
 */
public class ModelTabulky extends AbstractTableModel {
    
    private String[] nazvySloupcu = {"Adresa školy", "Rok nástupu", "Rok ukončení"};
    private ArrayList<Object[]> data = new ArrayList<Object[]>();

    /*************************************************************************
     * Vrátí počet řádek tabulky.
     * @return počet řádek tabulky
     */
    public int getRowCount() {
        return data.size();
    }

    /*************************************************************************
     * Vrátí počet sloupců.
     * @return počet sloupců
     */
    public int getColumnCount() {
        return nazvySloupcu.length;
    }

    /*************************************************************************
     * Vrátí hodnotu na zadaných souřadnicích v tabulce.
     * @param rowIndex souřadnice řádku
     * @param columnIndex souřadnice sloupce
     * @return hodnota v tabulce
     */
    public Object getValueAt(int rowIndex, int columnIndex) {
        return data.get(rowIndex)[columnIndex];
    }

    /*************************************************************************
     * Vrátí název sloupce.
     * @param col souřadnice sloupce
     * @return název sloupce
     */
    @Override
    public String getColumnName(int col){
        return nazvySloupcu[col];
    }

    /*************************************************************************
     * Vrací true, pokud je buňka editovatelná.
     * @param row souřadnice řádku
     * @param col souřadnice sloupce
     * @return true, když je buňka editovatelná
     */
    @Override
    public boolean isCellEditable(int row, int col){
        return true;
    }

    /*************************************************************************
     * Nastaví novou hodnotu dané buňky.
     * @param value hodnota
     * @param row souřadnice řádku
     * @param col souřadnice sloupce
     */
    @Override
    public void setValueAt(Object value, int row, int col) {
        data.get(row)[col] = value;
        fireTableCellUpdated(row, col);
    }

    /*************************************************************************
     * Přidá řádek.
     * @param values hodnoty nového řádku
     */
    public void addRow(Object[] values){
        int radek = data.size();
        data.add(radek, values);
        fireTableDataChanged();
    }

    /*************************************************************************
     * Vymaže tabulku.
     */
    public void smazatTabulku(){
        data.clear();
        fireTableDataChanged();
    }

}
